#include<bits/stdc++.h>
using namespace std;
int min(int x,int y){
	if(x<y)return x;
	return y;
}
int max(int x,int y){
	if(x>y)return x;
	return y;
}
const int N=500000<<1;
int T,que[N+10],n,i,newq[N+10];
char con[N+10];
bool flag=false,sign[(N>>1)+10];
bool conduct(int k,int t,int fir,int las){
//	printf("conducting %d , %d , %d , %d\n",k,t,fir,las);
	if(flag)return true;
	if(k==n<<1){
	//	puts("Arrival!");
		newq[k]=que[fir];
		con[k]='L';
	//	for(register int i=1;i<=n<<1;++i)printf("%d ",newq[i]);
	//	putchar(10);
		for(register int i=1;i<=n;++i)
		   if(newq[i]!=newq[(n<<1)-i+1]){
		//   	puts("Emm...");
		   	return false;
		   }
		flag=true;
	//	puts("OK");
		return true;
	}
	if(t^1){
		newq[k]=que[las];
	//	printf("sign[que[%d]]=sign[%d]=%d k=%d\n",las,que[las],sign[que[las]],k);
		if((k>n&&!sign[que[las]])||(k<=n&&sign[que[las]])){
			return false;
		}
		
		con[k]='R';
		sign[que[las]]=!sign[que[las]];
		--las;
		
		
	    if(conduct(k+1,1,fir,las))return true;
	    
	    if(conduct(k+1,2,fir,las))return true;
	    
	    ++las;
		sign[que[las]]=!sign[que[las]];
	}
	else{
		newq[k]=que[fir];
	//	printf("sign[que[%d]]=sign[%d]=%d k=%d\n",fir,que[fir],sign[que[fir]],k);
		if((k>n&&!sign[que[fir]])||(k<=n&&sign[que[fir]])){
			return false;
	    }
	    
		con[k]='L';
		sign[que[fir]]=!sign[que[fir]];
		++fir;
		
		
	    if(conduct(k+1,1,fir,las))return true;
	    
	    if(conduct(k+1,2,fir,las))return true;
	    
	    --fir;
		sign[que[fir]]=!sign[que[fir]];
	}
	
	return false;
}
int main(){
	freopen("palin.in","r",stdin);
	freopen("palin.out","w",stdout);
	scanf("%d",&T);
	while(T){
		for(i=1;i<=n;++i)sign[i]=0;
		scanf("%d",&n),flag=false;
		for(i=1;i<=n<<1;++i)scanf("%d",&que[i]);
		conduct(1,1,1,n<<1);
	    conduct(1,2,1,n<<1);
		if(!flag)puts("-1");
		else{
		    for(i=1;i<=n<<1;++i)putchar(con[i]);
		    putchar(10);
	    }
		--T;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

